package common;


import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;

/**
 * @author 陶贞
 * @version 1.0
 */
//保存公共的方法
public class Utils {
	//驱动对象
	public static WebDriver driver;

	//创建驱动对象
	public static WebDriver createDriver() {
		if (driver == null){
			//谷歌浏览器
			WebDriverManager.chromedriver().setup();
			ChromeOptions options = new ChromeOptions();
			//允许访问所有链接
			options.addArguments("--remote-allow-origins=*");

			driver = new ChromeDriver(options);

			//隐式等待
			driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
		}
		return driver;
	}

	//屏幕截图
	public void getScreenShot(String str) throws IOException {
		//1 设置文件夹命名格式（年月日）
		// SimpleDateFormat 格式化日期
		SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
		//设置文件加命名格式（时分秒）
		SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");

		//2 获取当前系统时间（按照上面设置的格式来获取当前时间）；文件目录的
		String dirTime = sim1.format(System.currentTimeMillis());
		//图片的
		String fileTime = sim2.format(System.currentTimeMillis());

		//设置截图的文件名称,路径（./src/test/img/2025-03-30/ test01-182128.png），按路径格式进行拼接字符串
		//str : 当前执行的自动化方法名
		String filename = "./src/test/image/" + dirTime + "/" + str + "-" + fileTime + ".png";

		//开始截图
		File screenshotAs = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
		//将截图存放到指定位置
		FileUtils.copyFile(screenshotAs, new File(filename));
	}

	//供外部调用来创建驱动对象
	public Utils(String url){
		//调用driver对象
		driver = createDriver();
		//访问url
		driver.get(url);
	}
}
